<?php
	class metapas extends Model {
		private $mTableName = 'SC_Etapas';
	
		public function __construct(){
			
			parent::Model();
			$this->load->database();
		}
		
		function CreateEtapa($nombre, $descripcion, $tiempo_estimado, $scriptS, $scriptM) 
		{
			if (empty($nombre) || empty($tiempo_estimado) )
				return false;
			
			$data = array(
				'NombreEtapa'       => $nombre,
				'DescripcionEtapa'	=> $descripcion,
				'DuracionEtapa'		=> $tiempo_estimado,
			    'Id_Script_Mail'    => $scriptM,
			    'Id_Script_Sms'     => $scriptS
			);
			
			$this->db->insert($this->mTableName, $data);
			return $this->LoadEtapaById($this->db->insert_id());
		}
		
		function UpdateEtapa($etapa) {
			$nombre = $etapa->GetNombre();
			$descripcion = $etapa->GetDescripcion();
			$tiempo_estimado = $etapa->GetTiempoEstimado();
			
			$data = array(
				'NombreEtapa'         	=> $nombre,
				'DescripcionEtapa'		=> $descripcion,
				'DuracionEtapa'			=> $tiempo_estimado,
			    'Id_Script_Mail'        => $etapa->getIdScriptMail(),
			    'Id_Script_Sms'         => $etapa->getIdScriptSms()
			);
			
			$this->db->where('IdEtapa', $etapa->GetIdEtapa());
        	$this->db->update($this->mTableName, $data);
			
			return true;
		}
		
		function LoadEtapaById($id_etapa) {
			
			$qresult = $this->db->get_where($this->mTableName, array('IdEtapa' => $id_etapa));

			if ($qresult->num_rows() == 0)
				return false;
	
			return new metapa($qresult->row());
		}
		
		function LoadEtapaByName($id) {
			$qresult = $this->db->get_where($this->mTableName, array('NombreEtapa' => $id));

			if ($qresult->num_rows() == 0)
				return false;
	
			return new metapa($qresult->row());
		}
		
		
		function LoadEtapas($name = false, $start = false, $offset = false, $sortname = false, $sortorder = false) {
			if($name != false && $name != '')
				$this->db->like('NombreEtapa', $name);
			
			if($offset != false)
				$this->db->limit($offset, $start);

			if($sortname != false && $sortorder != false) {
				$this->db->order_by($sortname, $sortorder);
			}
	
			$result = $this->db->get_where($this->mTableName);
	
			return $this->GetEtapasArrayFromQueryResult($result);
		}
		
		function GetCount() {
			return count($this->LoadEtapas());
		}
		
		function GetEtapasArrayFromQueryResult($result) {
			if ($result->num_rows() == 0)
				return false;
	
			$etapas_arr = array();
	
			foreach ($result->result() as $record) {
				$etapas_arr[] = new metapa($record);
			}
	
			return $etapas_arr;
    	}
		

		
		function Delete($id_etapa) 
		{
			$return = $this->db->delete($this->mTableName, array('IdEtapa' => $id_etapa));
			return $return;
		}
		/**
		 * 
		 * ACTUALIZA EL CAMPO categoria_etapa DE LA TABLA SC_Etapas
		 * CLASIFICANDO LAS ETAPAS
		 * @param int $idCategoria
		 * @param array $whereIn
		 */
		public function setIdCategoria($idCategoria = 0, $whereIn = array())
		{
			$data = array('categoria_etapa' => $idCategoria);
			$this->db->where_in('NombreEtapa', $whereIn);
        	$this->db->update($this->mTableName, $data);
		}
		/**
		 * 
		 * RETORNA UN ARRAY CON TODAS LAS ETAPAS DEPENDIENDO DE 
		 * LA CATEGORIA
		 * @param int $idCategoria
		 * 
		 * @return array
		 */
		public function loadEtapasPorCategorias($idCategoria)
		{
			
			$data = array('categoria_etapa' => $idCategoria);
			$result = $this->db->get_where($this->mTableName, $data);
	
			return $this->GetEtapasArrayFromQueryResult($result);
			
		}
	
	}
	
	
	class metapa {
		private $mIdEtapa = 0;
		
		private $mNombre = "";
		
		private $mDescripcion = "";
		
		private $mTiempoEstimado = 0;
		
		private $_idScriptMail = 0;
		
		private $_idScriptSms = 0;

		private $_clasifiacionProceso;

		function __construct($object) {
			
			$this->SetIdEtapa($object->IdEtapa);
			$this->SetNombre($object->NombreEtapa);
			$this->SetDescripcion($object->DescripcionEtapa);
			$this->SetTiempoEstimado($object->DuracionEtapa);
			$this->setIdScriptMail($object->Id_Script_Mail);
			$this->setIdScriptSms($object->Id_Script_Sms);
			$this->setClasificacionProceso($object->categoria_etapa);
		}
		
		public function getIdScriptMail()
		{
			return $this->_idScriptMail;
		}
		
	    public function setIdScriptMail($value)
		{
		    $this->_idScriptMail = $value;
		}
		
	    public function getIdScriptSms()
		{
			return $this->_idScriptSms;
		}
		
	    public function setIdScriptSms($value)
		{
		    $this->_idScriptSms = $value;
		}
		
		public function SetIdEtapa($id_etapa) {
			$this->mIdEtapa = $id_etapa;
		}
		
		function GetIdEtapa() {
			return $this->mIdEtapa;
		}
		
		function SetNombre($nombre) {
			$this->mNombre = $nombre;
		}
		
		function GetNombre() {
			return $this->mNombre;	
		}
		
		function SetDescripcion($descripcion) {
			$this->mDescripcion = $descripcion;
		}
		
		function GetDescripcion() {
			return $this->mDescripcion;
		}
		
		function SetTiempoEstimado($tiempo) {
			$this->mTiempoEstimado = $tiempo;
		}
		
		function GetTiempoEstimado() {
			return $this->mTiempoEstimado;
		}

		public function setClasificacionProceso($classProceso)
		{
			$this->_clasifiacionProceso = $classProceso;
		}
		
		public function getClasificacionProceso()
		{
			return $this->_clasifiacionProceso;
		}

	}
?>